export function toDownLoad(res){
  var bstr = atob(res.data.body);
  var n = bstr.length;
  var u8arr = new Uint8Array(n)
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n)
  }
  // 这里res.data是返回的是二进制文件流
  const blob = new Blob([u8arr], {type: 'application/octet-stream', endings: 'transparent'}); // 将二进制文件流转为blob

  let contentDisposition = res.data.headers['Content-Disposition']; // 从Response Headers中获取content-disposition的值, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名;
  let patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*'); // 设置正则表达式匹配格式
  // let patt = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/; // 设置正则表达式匹配格式
  let result = patt.exec(contentDisposition); // 通过正则表达式提取“filename=” 后的值
  let filename = result[1]; // 提取文件名

  // 兼容IE，window.navigator.msSaveBlob：以本地方式保存文件
  if (typeof window.navigator.msSaveBlob !== 'undefined') {
    window.navigator.msSaveBlob(blob, decodeURI(filename));
  } else {
    const blobURL = window.URL.createObjectURL(blob); // 把blob转化为一个Blob URL

    const aLink = document.createElement('a'); // 创建a标签，用于跳转至下载链接
    aLink.href = blobURL; // 设置a标签href值
    aLink.setAttribute('download', decodeURI(filename)); // 设置下载文件名称

    // if (res.config.params.fileType == undefined || res.config.params.fileType == '' || res.config.params.fileType == null) {
    //  aLink.setAttribute('download', res.config.params.fileName); // 设置下载文件名称
    // } else {
    //  aLink.setAttribute('download', res.config.params.fileName + '.' + res.config.params.fileType); // 设置下载文件名称
    // }

    // 兼容：某些浏览器不支持HTML5的download属性
    if (typeof aLink.download === 'undefined') {
      aLink.setAttribute('target', '_blank');
    }
    aLink.style.display = 'none'; // 隐藏a标签
    document.body.appendChild(aLink); // a标签插入到body中
    aLink.click(); // 模拟a标签点击事件 使其下载
    document.body.removeChild(aLink); // 移除a标签
    window.URL.revokeObjectURL(blob); //释放掉blob对象
  }
}
